"""
Diese Klasse bildet ein Inventarsystem.

Created on 20.07.2014

@author: Max
"""

import pygame, os

import Colors  # @UnresolvedImport

class Inventory(object):
    def __init__(self, res, log):
        self.Log = log
        self.surfInventory = pygame.Surface(res).convert()
        self.surfInventory.set_colorkey(Colors.BLACK)
        
        self.imgBG = pygame.image.load(os.path.join("..", "Resources", "Assets", "hud.png"))
        self.imgBG = pygame.transform.scale(self.imgBG, self.surfInventory.get_size())
        
        # Inventar-System. Repraesentiert durch <Item-Instanz: Itemanzahl> -> Bspw: <Core.Item(coin): 2>
        self.dictInventory = {}
        
        # Zeigt an, wo das naechste Item gezeichnet werden soll.
        self.iInvIndex = 0
        
        # Item-Stack-Font
        self.Font = pygame.font.Font(None, 30)
    
    def render(self):
        self.surfInventory.fill(Colors.BLACK)
        self.surfInventory.blit(self.imgBG, (0, 0))
        
        i = 30
        for elem in self.dictInventory:
            self.surfInventory.blit(elem.surfItem, (30, i))
        
            # Falls ein Item mehr als einmal im Inventar liegt, wird die Anzahl unten rechts am Item angezeigt.
            if self.dictInventory[elem] > 1:
                itemText = self.Font.render(str(self.dictInventory[elem]), 10, Colors.WHITE)
                elem.surfItem.fill(Colors.BLACK)
                elem.surfItem.blit(elem.imgItem, (0, 0))
                elem.surfItem.blit(itemText, (20, 14))
            
            i += 32
            
    def addItemToInventory(self, elem):
        """
        Hinzufuegen eines neuen Items zum Inventar. Ist ein Item dieser Art schon vorhanden, wird der Zaehler erhoeht.
        @param elem: Das Item, welches zum Inventar hinzugefuegt werden soll.
        """
        for entry in self.dictInventory:
            if entry.iID == elem.iID:
                self.dictInventory[entry] += 1
                self.Log.printToLog("Item: " + str(elem.iID) + " wurde erneut dem Inventar hinzugefuegt. Anzahl wurde erhoeht.")
                return
        self.dictInventory[elem] = 1
        self.Log.printToLog("Item: " + str(elem.iID) + " wurde dem Inventar hinzugefuegt.")
    
    def handleInput(self, event):
        pass
    
    
        
